package saeildamil.ch18.communication;

import javax.swing.JOptionPane;

public class CalcPIThread extends Thread {
	SharedArea sharedArea;

	public CalcPIThread(SharedArea sharedArea) {
		this.sharedArea = sharedArea;
	}

	@Override
	public void run() {
		double total = 0.0;
		for (int cnt = 1; cnt < 100000000; cnt += 2) {
			if (cnt / 2 % 2 == 0) {
				total += 1.0 / cnt;
			} else {
				total -= 1.0 / cnt;
			}
		}
		sharedArea.result = total * 4;
		sharedArea.isReady = true;
		JOptionPane.showMessageDialog(null, "PI값 계산이 완료되었습니다.");
		synchronized (sharedArea) {
			sharedArea.notifyAll();
			JOptionPane.showMessageDialog(null, "대기중인 PrintPIThread에게 신호를 보냈습니다.");
			// sharedArea 에서 wait()에 의해 대기하고 있는 thread 에게 신호를 보냄;
		}
	}
}
